package beans;

import dao.RecursoDAO;
import dao.RecursoDAOHibernate;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import modelo.Recurso;

@Named(value = "recursoBean")
@RequestScoped
public class recursoBean {

    private List<SelectItem> selecionarUmItemRecurso;
    private List<Recurso> lista;
    private Recurso recursoSelecionado;

    public recursoBean() {
        this.lista = new ArrayList<Recurso>();
        this.recursoSelecionado = new Recurso();
    }

    public List<SelectItem> getSelecionarUmItemRecurso() {
        this.selecionarUmItemRecurso = new ArrayList<SelectItem>();
        RecursoDAO recursoDAO = new RecursoDAOHibernate();
        List<Recurso> listaSelectItem = recursoDAO.listar();
        for (Recurso recurso : listaSelectItem) {
            SelectItem selectItem = new SelectItem(recurso.getNome(), recurso.getNome());
            this.selecionarUmItemRecurso.add(selectItem);
        }
        return selecionarUmItemRecurso;
    }

    public List<Recurso> getLista() {
        RecursoDAO recursoDAO = new RecursoDAOHibernate();
        this.lista = recursoDAO.listar();
        return lista;
    }

    public Recurso getRecursoSelecionado() {
        return recursoSelecionado;
    }

    public void setRecursoSelecionado(Recurso recursoSelecionado) {
        this.recursoSelecionado = recursoSelecionado;
    }

    public void btnCriarRecurso(ActionEvent actionEvent) {
        RecursoDAO recursoDAO = new RecursoDAOHibernate();
        String msg;
        if (recursoDAO.criar(this.recursoSelecionado)) {
            msg = "O recurso " + this.recursoSelecionado.getNome() + " foi criado com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao criar o registro de recurso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnAlterarRecurso(ActionEvent actionEvent) {
        RecursoDAO recursoDAO = new RecursoDAOHibernate();
        String msg;
        if (recursoDAO.alterar(this.recursoSelecionado)) {
            msg = "O recurso " + this.recursoSelecionado.getNome() + " foi alterado com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao alterar o registro de recurso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnExcluirRecurso(ActionEvent actionEvent) {
        RecursoDAO recursoDAO = new RecursoDAOHibernate();
        String msg;
        if (recursoDAO.excluir(this.recursoSelecionado)) {
            msg = "O recurso " + this.recursoSelecionado.getNome() + " foi excluído com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao excluir o registro de recurso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

}
